/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：太平金科-通用能力封装层-公共组件
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taipingframework.utility.extend;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

public class ObjectHelper {

    /**
     * 获取对象的 getter
     */
    public static <T> Map<String, Method> getReadMethodMap(Class<? extends T> clazz) throws IntrospectionException {
        Map<String, Method> fieldMap = new HashMap<>();
        Field[] fieldArray = clazz.getDeclaredFields();
        for (Field field : fieldArray) {
            String name = field.getName();
            PropertyDescriptor descriptor = new PropertyDescriptor(name, clazz);
            Method readMethod = descriptor.getReadMethod();
            fieldMap.put(name, readMethod);
        }
        return fieldMap;
    }

    /**
     * 获取对象的 setter
     */
    public static <T> Map<String, Method> getWriteMethodMap(Class<? extends T> clazz) throws IntrospectionException {
        Map<String, Method> fieldMap = new HashMap<>();
        Field[] fieldArray = clazz.getDeclaredFields();
        for (Field field : fieldArray) {
            String name = field.getName();
            PropertyDescriptor descriptor = new PropertyDescriptor(name, clazz);
            Method writeMethod = descriptor.getWriteMethod();
            fieldMap.put(name, writeMethod);
        }
        return fieldMap;
    }

}
